﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;


namespace Soundless_Project
{
    class Objeto2D
    {
        //Variáveis
        public Texture2D textura;
        public Vector2 posicao, velocidade, vetorDeOrigem;
        public Color cor;
        public bool visible;
        public float rotacao, escala, alpha;
        public Rectangle collisionBounds;

        //Função Construtora
        public Objeto2D(Texture2D textura)
        {
            this.textura = textura;
            this.posicao = new Vector2(textura.Height, textura.Width);
            this.velocidade = new Vector2(0, 0);
            this.cor = Color.White;
            this.visible = true;
            this.rotacao = 0;
            this.vetorDeOrigem.Y = textura.Height / 2;
            this.vetorDeOrigem.X = textura.Width / 2;
            this.escala = 1;
            this.alpha = 1;
        }

        public Boolean HitTestObject(Objeto2D objeto) // função que verifica a colisão entre dois objetos
        {

            this.CalcularRetangulo();
            objeto.CalcularRetangulo();

            if (this.collisionBounds.Intersects(objeto.collisionBounds))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        public void CalcularRetangulo()
        {
            collisionBounds = new Rectangle(
                (int)(posicao.X - ((escala * textura.Width) / 2)),  // posicao do retangulo em X
                (int)(posicao.Y - ((escala * textura.Height) / 2)), // posicao do retangulo em Y
                (int)(escala * textura.Width),                      // tamanho do retangulo em X
                (int)(escala * textura.Height));                    // tamanho do retangulo em Y
        }

        public virtual void Draw(SpriteBatch spriteBatch)
        {
            if (visible == true) // Função para desenhar as figuras na tela
            {
                spriteBatch.Draw(textura, posicao, null, cor * alpha, MathHelper.ToRadians(rotacao), vetorDeOrigem, escala, SpriteEffects.None, 0.5f);
            }
        }
    }
}